<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="utf-8" />
<title>flex</title>
<meta name="description" content="CSS3参考手册弹性盒模型之: flex" />
<meta name="keywords" content="flex, 弹性盒模型, css3, css3参考手册" />
<meta name="author" content="Joy Du(飘零雾雨), dooyoe@gmail.com, www.doyoe.com" />
<meta name="robots" content="all" />
<!--[if lte IE 8]>
<script src="../../js/html5.js"></script>
<![endif]-->
<link rel="stylesheet" href="../../skin/article.css" />
</head>
<body>
<nav id="guide" class="g-mod">
	<div class="from">
		<a href="http://css.doyoe.com/" target="_blank">CSS3参考手册</a>
		<span>&#187;</span>
		<a href="../index.htm">属性列表</a>
		<span>&#187;</span>
		<a href="index.htm" id="category" rel="properties/flex" name="flex">新弹性盒模型属性</a>
		<span>&#187;</span>
	</div>
	<div class="to">
		<span class="label">相关内容：</span>
		<div class="g-combobox g-transition">
			<a href="?" class="g-transition target">
				<strong>其它弹性盒模型属性</strong>
				<span>选择其它项<!--[if lte IE 7]><ins>IE7 and earlier, Get to die</ins><![endif]--></span>
			</a>
			<div class="g-transition list">
				<ul>
					<!-- 插入快速分类导航 -->
				</ul>
			</div>
		</div>
	</div>
</nav>
<header id="hd">
	<section id="title" class="g-mod">
		<h1 class="tit">flex</h1>
		<ul class="info">
			<li><strong>版本：CSS3</strong></li>
			<li>媒体：视觉</li>
		</ul>
		<!-- 插入浏览器信息 -->
	</section>
</header>
<section id="bd">
	<section id="syntax" class="g-mod g-attr">
		<h2 class="tit">语法：</h2>
		<div class="cont">
			<p><strong>flex</strong>：none | &lt;' <a href="flex-grow.htm">flex-grow</a> '&gt; &lt;' <a href="flex-shrink.htm">flex-shrink</a> &gt;'? || &lt;' <a href="flex-basis.htm">flex-basis</a> '&gt;</p>
			<p><strong>默认值</strong>：<mark class="defaultvalue">看各分拆属性</mark></p>
			<p><strong>适用于</strong>：flex子项</p>
			<p><strong>继承性</strong>：无</p>
			<p><strong>动画性</strong>：否</p>
			<p><strong>计算值</strong>：看各分拆属性</p>
		</div>
	</section>
	<section id="value" class="g-mod g-attr">
		<h2 class="tit">取值：</h2>
		<div class="cont">
			<dl>
				<dt>none：</dt>
				<dd>none关键字的计算值为: 0 0 auto</dd>
				<dt>&lt;' <a href="flex-grow.htm">flex-grow</a> '&gt;：</dt>
				<dd>用来指定扩展比率，即剩余空间是正值时此「flex子项」相对于「flex容器」里其他「flex子项」能分配到空间比例。<br />
					在「flex」属性中该值如果被省略则默认为「1」</dd>
				<dt>&lt;' <a href="flex-shrink.htm">flex-shrink</a> '&gt;：</dt>
				<dd>用来指定收缩比率，即剩余空间是负值时此「flex子项」相对于「flex容器」里其他「flex子项」能收缩的空间比例。<br />
					在收缩的时候收缩比率会以伸缩基准值加权<br />
					在「flex」属性中该值如果被省略则默认为「1」</dd>
				<dt>&lt;' <a href="flex-basis.htm">flex-basis</a> '&gt;：</dt>
				<dd>用来指定伸缩基准值，即在根据伸缩比率计算出剩余空间的分布之前，「flex子项」长度的起始数值。<br />
					在「flex」属性中该值如果被省略则默认为「0%」<br />
					在「flex」属性中该值如果被指定为「auto」，则伸缩基准值的计算值是自身的 &lt;' <a href="../dimension/width.htm">width</a> '&gt; 设置，如果自身的宽度没有定义，则长度取决于内容。
				</dd>
			</dl>
		</div>
	</section>
	<section id="intro" class="g-mod g-attr">
		<h2 class="tit">说明：</h2>
		<div class="cont">
			<strong>复合属性。设置或检索弹性盒模型对象的子元素如何分配空间。</strong>
			<ul>
				<li>如果缩写「flex: 1」, 则其计算值为「1 1 0%」</li>
				<li>如果缩写「flex: auto」, 则其计算值为「1 1 auto」</li>
				<li>如果「flex: none」, 则其计算值为「0 0 auto」</li>
				<li>如果「flex: 0 auto」或者「flex: initial」, 则其计算值为「0 1 auto」，即「flex」初始值</li>
				<li>
					<strong>示例：如下情况每个元素的计算宽是多少</strong>
					<div class="gquote">
						<p class="gquote-tit"><strong>Code：</strong></p>
						<blockquote class="gquote-cont"><code><xmp><ul class="flex">
    <li>a</li>
    <li>b</li>
    <li>c</li>
</ul>

.flex{display:flex;width:800px;margin:0;padding:0;list-style:none;}
.flex :nth-child(1){flex:1 1 300px;}
.flex :nth-child(2){flex:2 2 200px;}
.flex :nth-child(3){flex:3 3 400px;}</xmp></code></blockquote>
						<p class="gquote-info">本例定义了父容器宽（即主轴宽）为800px，由于子元素设置了伸缩基准值flex-basis，相加300+200+400=900，那么子元素将会溢出900-800=100px；<br />
						由于同时设置了收缩因子，所以加权综合可得300*1+200*2+400*3=1900px；<br />
						于是我们可以计算a,b,c将被移除的溢出量是多少：<br />
						a被移除溢出量：(300*1/1900)*100，即约等于16px<br />
						b被移除溢出量：(200*2/1900)*100，即约等于21px<br />
						c被移除溢出量：(400*3/1900)*100，即约等于63px<br />
						最后a,b,c的实际宽度分别为：300-16=284px, 200-21=179px, 400-63=337px</p>
					</div>
				</li>
				<li>
					<strong>仍然是上面这个例子，不过将容器的宽度改成了1500px</strong>
					<div class="gquote">
						<p class="gquote-tit"><strong>Code：</strong></p>
						<blockquote class="gquote-cont"><code><xmp><ul class="flex">
    <li>a</li>
    <li>b</li>
    <li>c</li>
</ul>

.flex{display:flex;width:1500px;margin:0;padding:0;list-style:none;}
.flex :nth-child(1){flex:1 1 300px;}
.flex :nth-child(2){flex:2 2 200px;}
.flex :nth-child(3){flex:3 3 400px;}</xmp></code></blockquote>
						<div class="gquote-info">本例定义了父容器宽（即主轴宽）为1500px，由于子元素设置了伸缩基准值flex-basis，相加300+200+400=900，那么容器将有1500-900=600px的剩余宽度；<br />
							于是我们可以计算a,b,c将被扩展量是多少：<br />
							a的扩展量：(1/(1+2+3))*600，即约等于100px<br />
							b的扩展量：(2/(1+2+3))*600，即约等于200px<br />
							c的扩展量：(3/(1+2+3))*600，即约等于300px<br />
							最后a,b,c的实际宽度分别为：300+100=400px, 200+200=400px, 400+300=700px<br />
							从本例能看出：
							<p>当「flex-basis」在「flex」属性中不为0时（包括值为auto，此时伸缩基准值等于自身内容宽度），「flex子项」将分配容器的剩余空间（剩余空间即等于容器宽度减去各项的伸缩基准值）</p>
							<p>当「flex-basis」在「flex」属性中等于0时，「flex子项」将分配容器的所有空间（因为各项的伸缩基准值相加等于0，剩余空间等于容器宽度减去各项的伸缩基准值，即减0，最后剩余空间值等于容器宽度），所以可以借助此特性，给各子项定义「flex: n」来进行按比例均分容器总宽度</p>
						</div>
					</div>
				</li>
				<li>对应的脚本特性为<strong>flex</strong>。</li>
			</ul>
		</div>
	</section>
	<section id="compatible" class="g-mod g-attr">
		<h2 class="tit">兼容性：</h2>
		<div class="cont">
			<ul class="support-type">
				<li><span class="support">浅绿</span> = 支持</li>
				<li><span class="unsupport">红色</span> = 不支持</li>
				<li><span class="partsupport">粉色</span> = 部分支持</li>
			</ul>
			<table class="g-data">
				<thead>
					<tr>
						<th>Values</th>
						<th>IE</th>
						<th>Firefox</th>
						<th>Chrome</th>
						<th>Safari</th>
						<th>Opera</th>
						<th>iOS Safari</th>
						<th>Android Browser</th>
						<th>Android Chrome</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td rowspan="3"><strong>Basic Support</strong></td>
						<td class="unsupport">6.0-10.0</td>
						<td class="unsupport">2.0-21.0</td>
						<td class="unsupport">4.0-20.0</td>
						<td class="unsupport">6.0</td>
						<td class="support">15.0+<sup class="fix">-webkit-</sup></td>
						<td class="unsupport">6.0-6.1</td>
						<td class="unsupport">2.1-4.3</td>
						<td class="unsupport">18.0-19.0</td>
					</tr>
					<tr>
						<td class="support" rowspan="2">11.0+</td>
						<td class="support" rowspan="2">22.0+</td>
						<td class="support">21.0+<sup class="fix">-webkit-</sup></td>
						<td class="support">6.1+<sup class="fix">-webkit-</sup></td>
						<td class="support" rowspan="2">17.0+</td>
						<td class="support">7.0+<sup class="fix">-webkit-</sup></td>
						<td class="support" rowspan="2">4.4+</td>
						<td class="support">20.0+<sup class="fix">-webkit-</sup></td>
					</tr>
					<tr>
						<td class="support">29.0+</td>
						<td class="support">9.0+</td>
						<td class="support">9.0+</td>
						<td class="support">28.0+</td>
					</tr>
				</tbody>
			</table>
		</div>
	</section>
	<section id="example" class="g-mod g-attr">
		<h2 class="tit">示例：</h2>
		<div class="cont">
			<textarea cols="90" rows="10">
<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="utf-8" />
<title>align-content_CSS参考手册_web前端开发参考手册系列</title>
<meta name="author" content="Joy Du(飘零雾雨), dooyoe@gmail.com, www.doyoe.com" />
<style>
h1{font:bold 20px/1.5 georgia,simsun,sans-serif;}
.box{
	display:-webkit-flex;
	display:flex;
	width:400px;height:100px;margin:10px 0 0;padding:0;border-radius:5px;list-style:none;background-color:#eee;}
.box li{background:#aaa;text-align:center;}
.box li:nth-child(1){background:#999;}
.box li:nth-child(2){background:#aaa;}
.box li:nth-child(3){background:#ccc;}
#box li:nth-child(1){-webkit-flex:1;flex:1;}
#box li:nth-child(2){-webkit-flex:1;flex:1;}
#box li:nth-child(3){-webkit-flex:1;flex:1;}
#box2 li:nth-child(1){-webkit-flex:1 0 100px;flex:1 0 100px;}
#box2 li:nth-child(2){-webkit-flex:2 0 100px;flex:2 0 100px;}
#box2 li:nth-child(3){-webkit-flex:3 0 100px;flex:3 0 100px;}
#box3 li:nth-child(1){-webkit-flex:1 1 400px;flex:1 1 400px;}
#box3 li:nth-child(2){-webkit-flex:1 2 400px;flex:1 2 400px;}
#box3 li:nth-child(3){-webkit-flex:1 2 400px;flex:1 2 400px;}
</style>
</head>
<body>
<h1>flex示例：</h1>

<ul id="box" class="box">
	<li>flex:1;</li>
	<li>flex:1;</li>
	<li>flex:1;</li>
</ul>

<ul id="box2" class="box">
	<li>flex:1 0 100px;</li>
	<li>flex:2 0 100px;</li>
	<li>flex:3 0 100px;</li>
</ul>

<ul id="box3" class="box">
	<li>flex:1 1 400px;</li>
	<li>flex:1 2 400px;</li>
	<li>flex:1 2 400px;</li>
</ul>
</body>
</html>
			</textarea>
			<p><input type="button" class="g-btn g-btn-sure" value="运行"></p>
		</div>
	</section>
	<section id="editime" class="g-mod g-attr">
		<h2 class="tit">本页最后更新时间：</h2>
		<div class="cont">
			2015.7.29
		</div>
	</section>
</section>
<footer id="ft">
	<aside id="rights" class="g-mod">
		<!-- 插入浏览器及版权信息 -->
	</aside>
</footer>
<script src="../../js/jquery.js"></script>
<script src="../../js/inner.js"></script>
</body>
</html>